<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //ES6允许使用箭头函数 (=>)定义函数
        //1.原来的声明方式
        // let fn = function() {

        // }

        //2.箭头函数的声明
       /*  let fn = (a, b) => {
            return a * b
        }
        let result = fn(45, 5);
        console.log(result); */

        //3.this是静态的，this使用箭头函数始终指向函数声明时所在作用域下的值
        function getName() {
            console.log(this.name);
        }
        let getName2 = () => {
            console.log(this.name);
        }
        //设置Window对象的name属性
        window.name = '袁华';
        const school = {
            name:'东仔'
        }
        //直接调用
        // getName();
        // getName2();

        //call方法调用
        getName.call(school);
        getName2.call(school); //箭头函数的this始终指向window的值

        //4.不能作为构造实例对象
        /* let Person = (name, age) => {
            this.name = name;
            this.age = age;
        }
        let me = new Person('张三', 100);
        console.log(me); */

        //5.不能使用arguments变量
        /* let fn = () => {
            console.log(arguments);
        }
        fn(1,2,3); */

        //6.箭头函数的简写
        //1.省略小括号，当形参有且只有一个的时候
        let add = n => {
            return n + n;
        }
        console.log('总和为:' + add(8));

        //2.省略花括号 当代码体只有一条的时候，此时return必须省略，而且语句的执行结果就是返回值
        let cheng = n => n * n;
        console.log('乘法值为:' + cheng(9));
    </script>
</body>
</html>